/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo.persistencia;

import java.io.Serializable;
import java.util.List;
import modelo.persistencia.hibernate.SessionFactoryUtil;
import modelo.persistencia.hibernate.pojo.Cliente;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author 
 */
public class ClienteDAO implements IClienteDAO{


    public void create(Serializable entidad) {

        Cliente c=(Cliente)entidad;
        boolean ret = true;
        //creamos la sesión de Hibernate
        Session sesion=  SessionFactoryUtil.getInstance().openSession();
        //iniciamos transacción
        Transaction t = sesion.beginTransaction();
        //guardamos
        sesion.save(c);
        //lanzamos la transacción
        t.commit();

    }

    public Serializable read(Serializable pk) {
        Cliente p = null;


        //creamos la sesión de Hibernate
        Session sesion=  SessionFactoryUtil.getInstance().openSession();
        //creamos la consulta HQL
        Query q = sesion.createQuery("from modelo.persistencia.hibernate.pojo.ClienteImpl where "
                + "dni=:dni");
        q.setString("dni", pk.toString());

        List resultado = q.list();
        if (resultado.size()>0){
            p = (Cliente)resultado.get(0);
        }
        return (Serializable)p;
    }

    public void update(Serializable entidad) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void delete(Serializable entidad) {
        Cliente c=(Cliente)entidad;
        boolean ret = true;
        //creamos la sesión de Hibernate
        Session sesion=  SessionFactoryUtil.getInstance().openSession();
        //iniciamos transacción
        Transaction t = sesion.beginTransaction();
        //guardamos
        sesion.delete(c);
        //lanzamos la transacción
        t.commit();
    }

    public List list() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
